package ade.prime.model;

import java.util.Map;

import ade.prime.activity.R;
import ade.prime.activity.adapter.ResourceFetcher;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.preference.PreferenceManager;
import android.util.Log;

/**
 * @author		Schnell Michaël, Zanette Sébastien
 * @version		1.0
 */
public class AdeWebOptions implements Preferences {
	
	@SuppressWarnings("unused")
	private static final String TAG = AdeWebOptions.class.getSimpleName() ;
	
	protected AdeWebOptions() {
		super() ;
	}// AdeWebOptions()
	
	public static int getTheme(Context context) {
		// Récupère les préférences de l'utilisateur
		SharedPreferences preferences = 
				PreferenceManager.getDefaultSharedPreferences(context) ;
		String preferenceKey = ResourceFetcher.getString(
				context, R.string.Preferences_theme) ; 
		String themeName = preferences.getString(preferenceKey, PREF_DEFAULT_THEME) ;
		int themeId = R.style.Theme_Sherlock_Light_DarkActionBar ;
		if (themeName.equals(PREF_THEME_DARK)) {
			themeId = R.style.Theme_Sherlock ;
		}// if
		return themeId ;
	}// getTheme(Activity)
	
	public static int getnHoursBetweenUpdates(Context context) {
		// Récupère les préférences de l'utilisateur
		SharedPreferences preferences = 
				PreferenceManager.getDefaultSharedPreferences(context) ;
		String preferenceKey = ResourceFetcher.getString(
				context, R.string.Preferences_sync_delay) ; 
		return Integer.parseInt(
				preferences.getString(preferenceKey, PREF_DEFAULT_SYNC_DELAY)) ;
	}// getnHoursBetweenUpdates(Context)
	
	public static boolean autoUpdateIsOn(Context context) {
		// Récupère les préférences de l'utilisateur
		SharedPreferences preferences = 
				PreferenceManager.getDefaultSharedPreferences(context) ;
		String preferenceKey = ResourceFetcher.getString(
				context, R.string.Preferences_sync) ; 
		return preferences.getBoolean(preferenceKey, PREF_SYNC_DEFAULT_VALUE) ;
	}// autoUpdateIsOn(Context)

	/**
	 * @param context
	 * @return
	 */
	public static boolean useAdeWebColors(Context context) {
		SharedPreferences preferences = 
				PreferenceManager.getDefaultSharedPreferences(context) ;
		String preferenceKey = ResourceFetcher.getString(
				context, R.string.Preferences_color_ADE) ; 
		return preferences.getBoolean(preferenceKey, PREF_COULEUR_ADE_DEFAULT_VALUE) ;
	}// useAdeWebColors(Context)
	
	protected static void printAllPreferences(Context context) {
		SharedPreferences preferences = 
				PreferenceManager.getDefaultSharedPreferences(context) ;
		Map<String, ?> params = preferences.getAll() ;
		for(String key : params.keySet()) {
			Log.d("AdeWebOptions", String.format( //$NON-NLS-1$
					"Key: '%s' - Value: '%s' of type %s",//$NON-NLS-1$
					key, params.get(key), 
					params.get(key).getClass().getSimpleName())) ;
		}// for
	}// printAllPreferences(Context)
	
	public static void registerChangeListener(Context context, 
			OnSharedPreferenceChangeListener listener) {
		SharedPreferences preferences = 
				PreferenceManager.getDefaultSharedPreferences(context) ;
		preferences.registerOnSharedPreferenceChangeListener(listener) ;
	}// registerChangeListener(Context, OnSharedPreferenceChangeListener)
	
	public static void unregisterChangeListener(Context context, 
			OnSharedPreferenceChangeListener listener) {
		SharedPreferences preferences = 
				PreferenceManager.getDefaultSharedPreferences(context) ;
		preferences.unregisterOnSharedPreferenceChangeListener(listener) ;
	}// unregisterChangeListener(Context, OnSharedPreferenceChangeListener)

}// class AdeWebOptions